#include "Multigrid.h"
#include "Restrict.h"
#include "Interpolation.h"
#define pi 4 * atan(1.0)
double f(double x)
{
    //return pi * pi * sin(pi * x);
    return -exp(sin(x))*cos(x)*cos(x) + exp(sin(x))*sin(x);
}
double u(double x)
{
    //return sin(pi * x);
    return exp(sin(x));
}
int main()
{
    MyMultigrid::Options op;
    //op.RestrictionOperatorType = "Injection";
    op.BoundoryConditionType = "Nohomogeneous";
    op.CycleType = "Vcycle";
    op.InterpolationOperatorOperatorType = "Quadratic";
    op.MaxIterNum = 10;
    op.RelAccurcy = 1e-7;
    MyMultigrid::Multigrid<16> m(u,f,op);
    std::cout << m << std::endl;
    m.solve();
    return 0;
}